home *** CD-ROM | disk | FTP | other *** search
- package sun.awt;
-
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.nio.charset.Charset;
- import java.nio.charset.CharsetEncoder;
- import java.security.AccessController;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Hashtable;
- import java.util.Locale;
- import java.util.Map;
- import java.util.Set;
- import java.util.Vector;
- import java.util.logging.Logger;
- import sun.font.CompositeFontDescriptor;
- import sun.font.FontManager;
- import sun.java2d.SunGraphicsEnvironment;
-
- public abstract class FontConfiguration {
- protected static String osVersion;
- protected static String osName;
- protected static String encoding;
- protected static Locale startupLocale = null;
- protected static Hashtable localeMap = null;
- private static FontConfiguration fontConfig;
- private static Logger logger;
- protected static boolean isProperties = true;
- protected SunGraphicsEnvironment environment;
- protected boolean preferLocaleFonts;
- protected boolean preferPropFonts;
- private static short stringIDNum;
- private static short[] stringIDs;
- private static StringBuilder stringTable;
- public static boolean verbose;
- private short initELC = -1;
- private Locale initLocale;
- private String initEncoding;
- private String alphabeticSuffix;
- private short[][][] compFontNameIDs = new short[5][4][];
- private int[][][] compExclusions = new int[5][][];
- private int[] compCoreNum = new int[5];
- private Set<Short> coreFontNameIDs = new HashSet();
- private Set<Short> fallbackFontNameIDs = new HashSet();
- protected static final int NUM_FONTS = 5;
- protected static final int NUM_STYLES = 4;
- private static final String[] fontNames = new String[]{"serif", "sansserif", "monospaced", "dialog", "dialoginput"};
- private static final String[] publicFontNames = new String[]{"Serif", "SansSerif", "Monospaced", "Dialog", "DialogInput"};
- private static final String[] styleNames = new String[]{"plain", "bold", "italic", "bolditalic"};
- private static String[] installedFallbackFontFiles = null;
- protected HashMap reorderMap = null;
- private Hashtable charsetRegistry = new Hashtable(5);
- private FontDescriptor[][][] fontDescriptors = new FontDescriptor[5][4][];
- HashMap<String, Boolean> existsMap;
- private int numCoreFonts = -1;
- private String[] componentFonts = null;
- HashMap<String, String> filenamesMap = new HashMap();
- HashSet<String> coreFontFileNames = new HashSet();
- private static final int HEAD_LENGTH = 20;
- private static final int INDEX_scriptIDs = 0;
- private static final int INDEX_scriptFonts = 1;
- private static final int INDEX_elcIDs = 2;
- private static final int INDEX_sequences = 3;
- private static final int INDEX_fontfileNameIDs = 4;
- private static final int INDEX_componentFontNameIDs = 5;
- private static final int INDEX_filenames = 6;
- private static final int INDEX_awtfontpaths = 7;
- private static final int INDEX_exclusions = 8;
- private static final int INDEX_proportionals = 9;
- private static final int INDEX_scriptFontsMotif = 10;
- private static final int INDEX_alphabeticSuffix = 11;
- private static final int INDEX_stringIDs = 12;
- private static final int INDEX_stringTable = 13;
- private static final int INDEX_TABLEEND = 14;
- private static final int INDEX_fallbackScripts = 15;
- private static final int INDEX_appendedfontpath = 16;
- private static final int INDEX_version = 17;
- private static short[] head;
- private static short[] table_scriptIDs;
- private static short[] table_scriptFonts;
- private static short[] table_elcIDs;
- private static short[] table_sequences;
- private static short[] table_fontfileNameIDs;
- private static short[] table_componentFontNameIDs;
- private static short[] table_filenames;
- protected static short[] table_awtfontpaths;
- private static short[] table_exclusions;
- private static short[] table_proportionals;
- private static short[] table_scriptFontsMotif;
- private static short[] table_alphabeticSuffix;
- private static short[] table_stringIDs;
- private static char[] table_stringTable;
- private HashMap<String, Short> reorderScripts;
- private static String[] stringCache;
- private static final int[] EMPTY_INT_ARRAY = new int[0];
- private static final String[] EMPTY_STRING_ARRAY = new String[0];
- private static final short[] EMPTY_SHORT_ARRAY = new short[0];
- private static final String UNDEFINED_COMPONENT_FONT = "unknown";
-
- public FontConfiguration(SunGraphicsEnvironment var1) {
- if (SunGraphicsEnvironment.debugFonts && logger == null) {
- logger = Logger.getLogger("sun.awt.FontConfiguration");
- }
-
- this.environment = var1;
- this.preferLocaleFonts = false;
- this.preferPropFonts = false;
- this.setOsNameAndVersion();
- this.setEncoding();
- fontConfig = this;
- this.readFontConfigFile();
- this.initFontConfig();
- }
-
- public FontConfiguration(SunGraphicsEnvironment var1, boolean var2, boolean var3) {
- this.environment = var1;
- this.preferLocaleFonts = var2;
- this.preferPropFonts = var3;
- this.initFontConfig();
- }
-
- protected void setOsNameAndVersion() {
- osName = System.getProperty("os.name");
- osVersion = System.getProperty("os.version");
- }
-
- private void setEncoding() {
- encoding = Charset.defaultCharset().name();
- startupLocale = SunToolkit.getStartupLocale();
- }
-
- private void readFontConfigFile() {
- Object var1 = null;
- String var2 = System.getProperty("java.home");
- if (var2 == null) {
- throw new Error("java.home property not set");
- } else {
- String var3 = var2 + File.separator + "lib";
- String var4 = System.getProperty("sun.awt.fontconfig");
- File var7;
- if (var4 != null) {
- var7 = new File(var4);
- } else {
- var7 = this.findFontConfigFile(var3);
- }
-
- this.getInstalledFallbackFonts(var3);
- if (var7 != null) {
- try {
- FileInputStream var5 = new FileInputStream(var7.getPath());
- if (isProperties) {
- loadProperties(var5);
- } else {
- loadBinary(var5);
- }
-
- var5.close();
- if (SunGraphicsEnvironment.debugFonts) {
- logger.config("Read logical font configuration from " + var7);
- }
- } catch (IOException var6) {
- if (SunGraphicsEnvironment.debugFonts) {
- logger.config("Failed to read logical font configuration from " + var7);
- }
- }
- }
-
- String var8 = this.getVersion();
- if (!"1".equals(var8) && SunGraphicsEnvironment.debugFonts) {
- logger.config("Unsupported fontconfig version: " + var8);
- }
-
- }
- }
-
- private void getInstalledFallbackFonts(String var1) {
- String var2 = var1 + File.separator + "fonts" + File.separator + "fallback";
- File var3 = new File(var2);
- if (var3.exists() && var3.isDirectory()) {
- String[] var4 = var3.list(SunGraphicsEnvironment.ttFilter);
- String[] var5 = var3.list(SunGraphicsEnvironment.t1Filter);
- int var6 = var4 == null ? 0 : var4.length;
- int var7 = var5 == null ? 0 : var5.length;
- int var8 = var6 + var7;
- if (var6 + var7 == 0) {
- return;
- }
-
- installedFallbackFontFiles = new String[var8];
-
- for(int var9 = 0; var9 < var6; ++var9) {
- installedFallbackFontFiles[var9] = var3 + File.separator + var4[var9];
- }
-
- for(int var10 = 0; var10 < var7; ++var10) {
- installedFallbackFontFiles[var10 + var6] = var3 + File.separator + var5[var10];
- }
-
- this.environment.registerFontsInDir(var2);
- }
-
- }
-
- private File findImpl(String var1) {
- File var2 = new File(var1 + ".properties");
- if (var2.canRead()) {
- isProperties = true;
- return var2;
- } else {
- var2 = new File(var1 + ".bfc");
- if (var2.canRead()) {
- isProperties = false;
- return var2;
- } else {
- return null;
- }
- }
- }
-
- private File findFontConfigFile(String var1) {
- String var2 = var1 + File.separator + "fontconfig";
- if (osVersion != null && osName != null) {
- File var3 = this.findImpl(var2 + "." + osName + "." + osVersion);
- if (var3 != null) {
- return var3;
- }
- }
-
- if (osName != null) {
- File var4 = this.findImpl(var2 + "." + osName);
- if (var4 != null) {
- return var4;
- }
- }
-
- if (osVersion != null) {
- File var5 = this.findImpl(var2 + "." + osVersion);
- if (var5 != null) {
- return var5;
- }
- }
-
- File var6 = this.findImpl(var2);
- return var6 != null ? var6 : null;
- }
-
- public static void loadBinary(InputStream var0) throws IOException {
- DataInputStream var1 = new DataInputStream(var0);
- head = readShortTable(var1, 20);
- int[] var2 = new int[14];
-
- for(int var3 = 0; var3 < 14; ++var3) {
- var2[var3] = head[var3 + 1] - head[var3];
- }
-
- table_scriptIDs = readShortTable(var1, var2[0]);
- table_scriptFonts = readShortTable(var1, var2[1]);
- table_elcIDs = readShortTable(var1, var2[2]);
- table_sequences = readShortTable(var1, var2[3]);
- table_fontfileNameIDs = readShortTable(var1, var2[4]);
- table_componentFontNameIDs = readShortTable(var1, var2[5]);
- table_filenames = readShortTable(var1, var2[6]);
- table_awtfontpaths = readShortTable(var1, var2[7]);
- table_exclusions = readShortTable(var1, var2[8]);
- table_proportionals = readShortTable(var1, var2[9]);
- table_scriptFontsMotif = readShortTable(var1, var2[10]);
- table_alphabeticSuffix = readShortTable(var1, var2[11]);
- table_stringIDs = readShortTable(var1, var2[12]);
- stringCache = new String[table_stringIDs.length + 1];
- int var7 = var2[13];
- byte[] var4 = new byte[var7 * 2];
- table_stringTable = new char[var7];
- var1.read(var4);
- int var5 = 0;
-
- for(int var6 = 0; var5 < var7; table_stringTable[var5++] = (char)(var4[var6++] << 8 | var4[var6++] & 255)) {
- }
-
- if (verbose) {
- dump();
- }
-
- }
-
- public static void saveBinary(OutputStream var0) throws IOException {
- DataOutputStream var1 = new DataOutputStream(var0);
- writeShortTable(var1, head);
- writeShortTable(var1, table_scriptIDs);
- writeShortTable(var1, table_scriptFonts);
- writeShortTable(var1, table_elcIDs);
- writeShortTable(var1, table_sequences);
- writeShortTable(var1, table_fontfileNameIDs);
- writeShortTable(var1, table_componentFontNameIDs);
- writeShortTable(var1, table_filenames);
- writeShortTable(var1, table_awtfontpaths);
- writeShortTable(var1, table_exclusions);
- writeShortTable(var1, table_proportionals);
- writeShortTable(var1, table_scriptFontsMotif);
- writeShortTable(var1, table_alphabeticSuffix);
- writeShortTable(var1, table_stringIDs);
- var1.writeChars(new String(table_stringTable));
- var0.close();
- if (verbose) {
- dump();
- }
-
- sanityCheck();
- }
-
- public static void loadProperties(InputStream var0) throws IOException {
- stringIDNum = 1;
- stringIDs = new short[1000];
- stringTable = new StringBuilder(4096);
- if (verbose && logger == null) {
- logger = Logger.getLogger("sun.awt.FontConfiguration");
- }
-
- (new PropertiesHandler()).load(var0);
- stringIDs = null;
- stringTable = null;
- }
-
- private void initFontConfig() {
- this.initLocale = startupLocale;
- this.initEncoding = encoding;
- if (this.preferLocaleFonts && !willReorderForStartupLocale()) {
- this.preferLocaleFonts = false;
- }
-
- this.initELC = this.getInitELC();
- this.initAllComponentFonts();
- }
-
- private short getInitELC() {
- if (this.initELC != -1) {
- return this.initELC;
- } else {
- HashMap var1 = new HashMap();
-
- for(int var2 = 0; var2 < table_elcIDs.length; ++var2) {
- var1.put(getString(table_elcIDs[var2]), var2);
- }
-
- String var6 = this.initLocale.getLanguage();
- String var3 = this.initLocale.getCountry();
- String var4;
- boolean var10000 = var1.containsKey(var4 = this.initEncoding + "." + var6 + "." + var3);
- if (!var10000 && !var1.containsKey(var4 = this.initEncoding + "." + var6) && !var1.containsKey(var4 = this.initEncoding)) {
- this.initELC = ((Integer)var1.get("NULL.NULL.NULL")).shortValue();
- } else {
- this.initELC = ((Integer)var1.get(var4)).shortValue();
- }
-
- for(int var5 = 0; var5 < table_alphabeticSuffix.length; var5 += 2) {
- if (this.initELC == table_alphabeticSuffix[var5]) {
- this.alphabeticSuffix = getString(table_alphabeticSuffix[var5 + 1]);
- return this.initELC;
- }
- }
-
- return this.initELC;
- }
- }
-
- private void initAllComponentFonts() {
- short[] var1 = getFallbackScripts();
-
- for(int var2 = 0; var2 < 5; ++var2) {
- short[] var3 = this.getCoreScripts(var2);
- this.compCoreNum[var2] = var3.length;
- int[][] var4 = new int[var3.length][];
-
- for(int var5 = 0; var5 < var3.length; ++var5) {
- var4[var5] = getExclusionRanges(var3[var5]);
- }
-
- this.compExclusions[var2] = var4;
-
- for(int var10 = 0; var10 < 4; ++var10) {
- short[] var7 = new short[var3.length + var1.length];
-
- int var6;
- for(var6 = 0; var6 < var3.length; ++var6) {
- var7[var6] = getComponentFontID(var3[var6], var2, var10);
- if (this.preferLocaleFonts && localeMap != null && FontManager.usingAlternateFontforJALocales()) {
- var7[var6] = this.remapLocaleMap(var2, var10, var3[var6], var7[var6]);
- }
-
- if (this.preferPropFonts) {
- var7[var6] = this.remapProportional(var2, var7[var6]);
- }
-
- this.coreFontNameIDs.add(var7[var6]);
- }
-
- for(int var8 = 0; var8 < var1.length; ++var8) {
- short var9 = getComponentFontID(var1[var8], var2, var10);
- if (this.preferLocaleFonts && localeMap != null && FontManager.usingAlternateFontforJALocales()) {
- var9 = this.remapLocaleMap(var2, var10, var1[var8], var9);
- }
-
- if (this.preferPropFonts) {
- var9 = this.remapProportional(var2, var9);
- }
-
- if (!contains(var7, var9, var6)) {
- this.fallbackFontNameIDs.add(var9);
- var7[var6++] = var9;
- }
- }
-
- if (var6 < var7.length) {
- short[] var11 = new short[var6];
- System.arraycopy(var7, 0, var11, 0, var6);
- var7 = var11;
- }
-
- this.compFontNameIDs[var2][var10] = var7;
- }
- }
-
- }
-
- private short remapLocaleMap(int var1, int var2, short var3, short var4) {
- String var5 = getString(table_scriptIDs[var3]);
- String var6 = (String)localeMap.get(var5);
- if (var6 == null) {
- String var7 = fontNames[var1];
- String var8 = styleNames[var2];
- var6 = (String)localeMap.get(var7 + "." + var8 + "." + var5);
- }
-
- if (var6 == null) {
- return var4;
- } else {
- for(int var9 = 0; var9 < table_componentFontNameIDs.length; ++var9) {
- String var10 = getString(table_componentFontNameIDs[var9]);
- if (var6.equalsIgnoreCase(var10)) {
- var4 = (short)var9;
- break;
- }
- }
-
- return var4;
- }
- }
-
- public static boolean hasMonoToPropMap() {
- return table_proportionals != null && table_proportionals.length != 0;
- }
-
- private short remapProportional(int var1, short var2) {
- if (this.preferPropFonts && table_proportionals.length != 0 && var1 != 2 && var1 != 4) {
- for(int var3 = 0; var3 < table_proportionals.length; var3 += 2) {
- if (table_proportionals[var3] == var2) {
- return table_proportionals[var3 + 1];
- }
- }
- }
-
- return var2;
- }
-
- public static boolean isLogicalFontFamilyName(String var0) {
- return isLogicalFontFamilyNameLC(var0.toLowerCase(Locale.ENGLISH));
- }
-
- public static boolean isLogicalFontFamilyNameLC(String var0) {
- for(int var1 = 0; var1 < fontNames.length; ++var1) {
- if (var0.equals(fontNames[var1])) {
- return true;
- }
- }
-
- return false;
- }
-
- private static boolean isLogicalFontStyleName(String var0) {
- for(int var1 = 0; var1 < styleNames.length; ++var1) {
- if (var0.equals(styleNames[var1])) {
- return true;
- }
- }
-
- return false;
- }
-
- public static boolean isLogicalFontFaceName(String var0) {
- return isLogicalFontFaceNameLC(var0.toLowerCase(Locale.ENGLISH));
- }
-
- public static boolean isLogicalFontFaceNameLC(String var0) {
- int var1 = var0.indexOf(46);
- if (var1 < 0) {
- return isLogicalFontFamilyName(var0);
- } else {
- String var2 = var0.substring(0, var1);
- String var3 = var0.substring(var1 + 1);
- return isLogicalFontFamilyName(var2) && isLogicalFontStyleName(var3);
- }
- }
-
- protected static int getFontIndex(String var0) {
- return getArrayIndex(fontNames, var0);
- }
-
- protected static int getStyleIndex(String var0) {
- return getArrayIndex(styleNames, var0);
- }
-
- private static int getArrayIndex(String[] var0, String var1) {
- for(int var2 = 0; var2 < var0.length; ++var2) {
- if (var1.equals(var0[var2])) {
- return var2;
- }
- }
-
- assert false;
-
- return 0;
- }
-
- protected static int getStyleIndex(int var0) {
- switch (var0) {
- case 0:
- return 0;
- case 1:
- return 1;
- case 2:
- return 2;
- case 3:
- return 3;
- default:
- return 0;
- }
- }
-
- protected static String getFontName(int var0) {
- return fontNames[var0];
- }
-
- protected static String getStyleName(int var0) {
- return styleNames[var0];
- }
-
- public static String getLogicalFontFaceName(String var0, int var1) {
- assert isLogicalFontFamilyName(var0);
-
- return var0.toLowerCase(Locale.ENGLISH) + "." + getStyleString(var1);
- }
-
- public static String getStyleString(int var0) {
- return getStyleName(getStyleIndex(var0));
- }
-
- public abstract String getFallbackFamilyName(String var1, String var2);
-
- protected String getCompatibilityFamilyName(String var1) {
- var1 = var1.toLowerCase(Locale.ENGLISH);
- if (var1.equals("timesroman")) {
- return "serif";
- } else if (var1.equals("helvetica")) {
- return "sansserif";
- } else {
- return var1.equals("courier") ? "monospaced" : null;
- }
- }
-
- protected String mapFileName(String var1) {
- return var1;
- }
-
- protected abstract void initReorderMap();
-
- private void shuffle(String[] var1, int var2, int var3) {
- if (var3 < var2) {
- String var4 = var1[var2];
-
- for(int var5 = var2; var5 > var3; --var5) {
- var1[var5] = var1[var5 - 1];
- }
-
- var1[var3] = var4;
- }
- }
-
- public static boolean willReorderForStartupLocale() {
- return getReorderSequence() != null;
- }
-
- private static Object getReorderSequence() {
- if (fontConfig.reorderMap == null) {
- fontConfig.initReorderMap();
- }
-
- HashMap var0 = fontConfig.reorderMap;
- String var1 = startupLocale.getLanguage();
- String var2 = startupLocale.getCountry();
- Object var3 = var0.get(encoding + "." + var1 + "." + var2);
- if (var3 == null) {
- var3 = var0.get(encoding + "." + var1);
- }
-
- if (var3 == null) {
- var3 = var0.get(encoding);
- }
-
- return var3;
- }
-
- private void reorderSequenceForLocale(String[] var1) {
- Object var2 = getReorderSequence();
- if (var2 instanceof String) {
- for(int var3 = 0; var3 < var1.length; ++var3) {
- if (var1[var3].equals(var2)) {
- this.shuffle(var1, var3, 0);
- return;
- }
- }
- } else if (var2 instanceof String[]) {
- String[] var6 = (String[])var2;
-
- for(int var4 = 0; var4 < var6.length; ++var4) {
- for(int var5 = 0; var5 < var1.length; ++var5) {
- if (var1[var5].equals(var6[var4])) {
- this.shuffle(var1, var5, var4);
- }
- }
- }
- }
-
- }
-
- private static Vector splitSequence(String var0) {
- Vector var1 = new Vector();
-
- int var2;
- int var3;
- for(var2 = 0; (var3 = var0.indexOf(44, var2)) >= 0; var2 = var3 + 1) {
- var1.add(var0.substring(var2, var3));
- }
-
- if (var0.length() > var2) {
- var1.add(var0.substring(var2, var0.length()));
- }
-
- return var1;
- }
-
- protected String[] split(String var1) {
- Vector var2 = splitSequence(var1);
- return (String[])var2.toArray(new String[0]);
- }
-
- public FontDescriptor[] getFontDescriptors(String var1, int var2) {
- assert isLogicalFontFamilyName(var1);
-
- var1 = var1.toLowerCase(Locale.ENGLISH);
- int var3 = getFontIndex(var1);
- int var4 = getStyleIndex(var2);
- return this.getFontDescriptors(var3, var4);
- }
-
- private FontDescriptor[] getFontDescriptors(int var1, int var2) {
- FontDescriptor[] var3 = this.fontDescriptors[var1][var2];
- if (var3 == null) {
- var3 = this.buildFontDescriptors(var1, var2);
- this.fontDescriptors[var1][var2] = var3;
- }
-
- return var3;
- }
-
- private FontDescriptor[] buildFontDescriptors(int var1, int var2) {
- String var10000 = fontNames[var1];
- var10000 = styleNames[var2];
- short[] var5 = this.getCoreScripts(var1);
- short[] var6 = this.compFontNameIDs[var1][var2];
- String[] var7 = new String[var5.length];
- String[] var8 = new String[var5.length];
-
- for(int var9 = 0; var9 < var7.length; ++var9) {
- var8[var9] = getComponentFontName(var6[var9]);
- var7[var9] = getScriptName(var5[var9]);
- if (this.alphabeticSuffix != null && "alphabetic".equals(var7[var9])) {
- var7[var9] = var7[var9] + "/" + this.alphabeticSuffix;
- }
- }
-
- int[][] var16 = this.compExclusions[var1];
- FontDescriptor[] var10 = new FontDescriptor[var8.length];
-
- for(int var11 = 0; var11 < var8.length; ++var11) {
- String var12 = this.makeAWTFontName(var8[var11], var7[var11]);
- String var13 = this.getEncoding(var8[var11], var7[var11]);
- if (var13 == null) {
- var13 = "default";
- }
-
- CharsetEncoder var14 = this.getFontCharsetEncoder(var13.trim(), var12);
- int[] var15 = var16[var11];
- var10[var11] = new FontDescriptor(var12, var14, var15);
- }
-
- return var10;
- }
-
- protected String makeAWTFontName(String var1, String var2) {
- return var1;
- }
-
- protected abstract String getEncoding(String var1, String var2);
-
- private CharsetEncoder getFontCharsetEncoder(String var1, String var2) {
- Object var3 = null;
- Charset var7;
- if (var1.equals("default")) {
- var7 = (Charset)this.charsetRegistry.get(var2);
- } else {
- var7 = (Charset)this.charsetRegistry.get(var1);
- }
-
- if (var7 != null) {
- return var7.newEncoder();
- } else {
- if (!var1.startsWith("sun.awt.") && !var1.equals("default")) {
- var7 = Charset.forName(var1);
- } else {
- Class var4 = (Class)AccessController.doPrivileged(new 1(this, var1));
- if (var4 != null) {
- try {
- var7 = (Charset)var4.newInstance();
- } catch (Exception var6) {
- }
- }
- }
-
- if (var7 == null) {
- var7 = this.getDefaultFontCharset(var2);
- }
-
- if (var1.equals("default")) {
- this.charsetRegistry.put(var2, var7);
- } else {
- this.charsetRegistry.put(var1, var7);
- }
-
- return var7.newEncoder();
- }
- }
-
- protected abstract Charset getDefaultFontCharset(String var1);
-
- public HashSet<String> getAWTFontPathSet() {
- return null;
- }
-
- public CompositeFontDescriptor[] get2DCompositeFontInfo() {
- CompositeFontDescriptor[] var1 = new CompositeFontDescriptor[20];
- String var2 = this.environment.getDefaultFontFile();
- String var3 = this.environment.getDefaultFontFaceName();
-
- for(int var4 = 0; var4 < 5; ++var4) {
- String var5 = publicFontNames[var4];
- int[][] var6 = this.compExclusions[var4];
- int var7 = 0;
-
- for(int var8 = 0; var8 < var6.length; ++var8) {
- var7 += var6[var8].length;
- }
-
- int[] var22 = new int[var7];
- int[] var9 = new int[var6.length];
- int var10 = 0;
- boolean var11 = false;
-
- for(int var12 = 0; var12 < var6.length; ++var12) {
- int[] var13 = var6[var12];
-
- for(int var14 = 0; var14 < var13.length; var22[var10++] = var13[var14++]) {
- int var10000 = var13[var14];
- var22[var10++] = var13[var14++];
- }
-
- var9[var12] = var10;
- }
-
- for(int var24 = 0; var24 < 4; ++var24) {
- int var25 = this.compFontNameIDs[var4][var24].length;
- boolean var27 = false;
- if (installedFallbackFontFiles != null) {
- var25 += installedFallbackFontFiles.length;
- }
-
- String var15 = var5 + "." + styleNames[var24];
- String[] var16 = new String[var25];
- String[] var17 = new String[var25];
-
- int var18;
- for(var18 = 0; var18 < this.compFontNameIDs[var4][var24].length; ++var18) {
- short var19 = this.compFontNameIDs[var4][var24][var18];
- short var20 = getComponentFileID(var19);
- var16[var18] = this.getFaceNameFromComponentFontName(getComponentFontName(var19));
- var17[var18] = this.mapFileName(getComponentFileName(var20));
- if (var17[var18] == null || this.needToSearchForFile(var17[var18])) {
- var17[var18] = this.getFileNameFromComponentFontName(getComponentFontName(var19));
- }
-
- if (!var27 && var2.equals(var17[var18])) {
- var27 = true;
- }
- }
-
- if (!var27) {
- int var28 = 0;
- if (installedFallbackFontFiles != null) {
- var28 = installedFallbackFontFiles.length;
- }
-
- if (var18 + var28 == var25) {
- String[] var32 = new String[var25 + 1];
- System.arraycopy(var16, 0, var32, 0, var18);
- var16 = var32;
- String[] var21 = new String[var25 + 1];
- System.arraycopy(var17, 0, var21, 0, var18);
- var17 = var21;
- }
-
- var16[var18] = var3;
- var17[var18] = var2;
- ++var18;
- }
-
- if (installedFallbackFontFiles != null) {
- for(int var29 = 0; var29 < installedFallbackFontFiles.length; ++var29) {
- var16[var18] = null;
- var17[var18] = installedFallbackFontFiles[var29];
- ++var18;
- }
- }
-
- if (var18 < var25) {
- String[] var30 = new String[var18];
- System.arraycopy(var16, 0, var30, 0, var18);
- var16 = var30;
- String[] var33 = new String[var18];
- System.arraycopy(var17, 0, var33, 0, var18);
- var17 = var33;
- }
-
- int[] var31 = var9;
- if (var18 != var9.length) {
- int var34 = var9.length;
- var31 = new int[var18];
- System.arraycopy(var9, 0, var31, 0, var34);
-
- for(int var35 = var34; var35 < var18; ++var35) {
- var31[var35] = var22.length;
- }
- }
-
- var1[var4 * 4 + var24] = new CompositeFontDescriptor(var15, this.compCoreNum[var4], var16, var17, var22, var31);
- }
- }
-
- return var1;
- }
-
- protected abstract String getFaceNameFromComponentFontName(String var1);
-
- protected abstract String getFileNameFromComponentFontName(String var1);
-
- public boolean needToSearchForFile(String var1) {
- SunGraphicsEnvironment var10000 = this.environment;
- if (!SunGraphicsEnvironment.isLinux) {
- return false;
- } else {
- if (this.existsMap == null) {
- this.existsMap = new HashMap();
- }
-
- Boolean var2 = (Boolean)this.existsMap.get(var1);
- if (var2 == null) {
- this.getNumberCoreFonts();
- if (!this.coreFontFileNames.contains(var1)) {
- var2 = Boolean.TRUE;
- } else {
- var2 = (new File(var1)).exists();
- this.existsMap.put(var1, var2);
- if (SunGraphicsEnvironment.debugFonts && var2 == Boolean.FALSE) {
- logger.warning("Couldn't locate font file " + var1);
- }
- }
- }
-
- return var2 == Boolean.FALSE;
- }
- }
-
- public int getNumberCoreFonts() {
- if (this.numCoreFonts == -1) {
- this.numCoreFonts = this.coreFontNameIDs.size();
- Short[] var1 = new Short[0];
- Short[] var2 = (Short[])this.coreFontNameIDs.toArray(var1);
- Short[] var3 = (Short[])this.fallbackFontNameIDs.toArray(var1);
- int var4 = 0;
-
- for(int var5 = 0; var5 < var3.length; ++var5) {
- if (this.coreFontNameIDs.contains(var3[var5])) {
- var3[var5] = null;
- } else {
- ++var4;
- }
- }
-
- this.componentFonts = new String[this.numCoreFonts + var4];
- Object var6 = null;
-
- int var10;
- for(var10 = 0; var10 < var2.length; ++var10) {
- short var7 = var2[var10];
- short var8 = getComponentFileID(var7);
- this.componentFonts[var10] = getComponentFontName(var7);
- String var9 = getComponentFileName(var8);
- if (var9 != null) {
- this.coreFontFileNames.add(var9);
- }
-
- this.filenamesMap.put(this.componentFonts[var10], this.mapFileName(var9));
- }
-
- for(int var11 = 0; var11 < var3.length; ++var11) {
- if (var3[var11] != null) {
- short var12 = var3[var11];
- short var13 = getComponentFileID(var12);
- this.componentFonts[var10] = getComponentFontName(var12);
- this.filenamesMap.put(this.componentFonts[var10], this.mapFileName(getComponentFileName(var13)));
- ++var10;
- }
- }
- }
-
- return this.numCoreFonts;
- }
-
- public String[] getPlatformFontNames() {
- if (this.numCoreFonts == -1) {
- this.getNumberCoreFonts();
- }
-
- return this.componentFonts;
- }
-
- public String getFileNameFromPlatformName(String var1) {
- return (String)this.filenamesMap.get(var1);
- }
-
- public String getExtraFontPath() {
- return getString(head[16]);
- }
-
- public String getVersion() {
- return getString(head[17]);
- }
-
- protected static FontConfiguration getFontConfiguration() {
- return fontConfig;
- }
-
- private static void sanityCheck() {
- int var0 = 0;
- String var1 = (String)AccessController.doPrivileged(new 2());
-
- for(int var2 = 1; var2 < table_filenames.length; ++var2) {
- if (table_filenames[var2] == -1) {
- System.out.println("\n Warning: <filename." + getString(table_componentFontNameIDs[var2]) + "> entry is missing!!!");
- if (!var1.contains("Linux")) {
- ++var0;
- }
- }
- }
-
- for(int var8 = 0; var8 < table_scriptIDs.length; ++var8) {
- short var3 = table_scriptFonts[var8];
- if (var3 == 0) {
- System.out.println("\n Error: <allfonts." + getString(table_scriptIDs[var8]) + "> entry is missing!!!");
- ++var0;
- } else if (var3 < 0) {
- var3 = (short)(-var3);
-
- for(int var4 = 0; var4 < 5; ++var4) {
- for(int var5 = 0; var5 < 4; ++var5) {
- int var6 = var4 * 4 + var5;
- short var7 = table_scriptFonts[var3 + var6];
- if (var7 == 0) {
- System.out.println("\n Error: <" + getFontName(var4) + "." + getStyleName(var5) + "." + getString(table_scriptIDs[var8]) + "> entry is missing!!!");
- ++var0;
- }
- }
- }
- }
- }
-
- if ("SunOS".equals(var1)) {
- for(int var9 = 0; var9 < table_awtfontpaths.length; ++var9) {
- if (table_awtfontpaths[var9] == 0) {
- String var11 = getString(table_scriptIDs[var9]);
- if (!var11.contains("lucida") && !var11.contains("dingbats") && !var11.contains("symbol")) {
- System.out.println("\nError: <awtfontpath." + var11 + "> entry is missing!!!");
- ++var0;
- }
- }
- }
- }
-
- if (var0 != 0) {
- System.out.println("!!THERE ARE " + var0 + " ERROR(S) IN " + "THE FONTCONFIG FILE, PLEASE CHECK ITS CONTENT!!\n");
- System.exit(1);
- }
-
- }
-
- private static void dump() {
- System.out.println("\n----Head Table------------");
-
- for(int var0 = 0; var0 < 20; ++var0) {
- System.out.println(" " + var0 + " : " + head[var0]);
- }
-
- System.out.println("\n----scriptIDs-------------");
- printTable(table_scriptIDs, 0);
- System.out.println("\n----scriptFonts----------------");
-
- for(int var6 = 0; var6 < table_scriptIDs.length; ++var6) {
- short var1 = table_scriptFonts[var6];
- if (var1 >= 0) {
- System.out.println(" allfonts." + getString(table_scriptIDs[var6]) + "=" + getString(table_componentFontNameIDs[var1]));
- }
- }
-
- for(int var7 = 0; var7 < table_scriptIDs.length; ++var7) {
- short var15 = table_scriptFonts[var7];
- if (var15 < 0) {
- var15 = (short)(-var15);
-
- for(int var2 = 0; var2 < 5; ++var2) {
- for(int var3 = 0; var3 < 4; ++var3) {
- int var4 = var2 * 4 + var3;
- short var5 = table_scriptFonts[var15 + var4];
- System.out.println(" " + getFontName(var2) + "." + getStyleName(var3) + "." + getString(table_scriptIDs[var7]) + "=" + getString(table_componentFontNameIDs[var5]));
- }
- }
- }
- }
-
- System.out.println("\n----elcIDs----------------");
- printTable(table_elcIDs, 0);
- System.out.println("\n----sequences-------------");
-
- for(int var8 = 0; var8 < table_elcIDs.length; ++var8) {
- System.out.println(" " + var8 + "/" + getString(table_elcIDs[var8]));
- short[] var17 = getShortArray(table_sequences[var8 * 5 + 0]);
-
- for(int var19 = 0; var19 < var17.length; ++var19) {
- System.out.println(" " + getString(table_scriptIDs[var17[var19]]));
- }
- }
-
- System.out.println("\n----fontfileNameIDs-------");
- printTable(table_fontfileNameIDs, 0);
- System.out.println("\n----componentFontNameIDs--");
- printTable(table_componentFontNameIDs, 1);
- System.out.println("\n----filenames-------------");
-
- for(int var9 = 0; var9 < table_filenames.length; ++var9) {
- if (table_filenames[var9] == -1) {
- System.out.println(" " + var9 + " : null");
- } else {
- System.out.println(" " + var9 + " : " + getString(table_fontfileNameIDs[table_filenames[var9]]));
- }
- }
-
- System.out.println("\n----awtfontpaths---------");
-
- for(int var10 = 0; var10 < table_awtfontpaths.length; ++var10) {
- System.out.println(" " + getString(table_scriptIDs[var10]) + " : " + getString(table_awtfontpaths[var10]));
- }
-
- System.out.println("\n----proportionals--------");
-
- for(int var11 = 0; var11 < table_proportionals.length; ++var11) {
- System.out.println(" " + getString(table_componentFontNameIDs[table_proportionals[var11++]]) + " -> " + getString(table_componentFontNameIDs[table_proportionals[var11]]));
- }
-
- int var13 = 0;
- System.out.println("\n----alphabeticSuffix----");
-
- while(var13 < table_alphabeticSuffix.length) {
- System.out.println(" " + getString(table_elcIDs[table_alphabeticSuffix[var13++]]) + " -> " + getString(table_alphabeticSuffix[var13++]));
- }
-
- System.out.println("\n----String Table---------");
- System.out.println(" stringID: Num =" + table_stringIDs.length);
- System.out.println(" stringTable: Size=" + table_stringTable.length * 2);
- System.out.println("\n----fallbackScriptIDs---");
- short[] var18 = getShortArray(head[15]);
-
- for(int var20 = 0; var20 < var18.length; ++var20) {
- System.out.println(" " + getString(table_scriptIDs[var18[var20]]));
- }
-
- System.out.println("\n----appendedfontpath-----");
- System.out.println(" " + getString(head[16]));
- System.out.println("\n----Version--------------");
- System.out.println(" " + getString(head[17]));
- }
-
- protected static short getComponentFontID(short var0, int var1, int var2) {
- short var3 = table_scriptFonts[var0];
- return var3 >= 0 ? var3 : table_scriptFonts[-var3 + var1 * 4 + var2];
- }
-
- protected static short getComponentFontIDMotif(short var0, int var1, int var2) {
- if (table_scriptFontsMotif.length == 0) {
- return 0;
- } else {
- short var3 = table_scriptFontsMotif[var0];
- return var3 >= 0 ? var3 : table_scriptFontsMotif[-var3 + var1 * 4 + var2];
- }
- }
-
- private static int[] getExclusionRanges(short var0) {
- short var1 = table_exclusions[var0];
- if (var1 == 0) {
- return EMPTY_INT_ARRAY;
- } else {
- char[] var2 = getString(var1).toCharArray();
- int[] var3 = new int[var2.length / 2];
- int var4 = 0;
-
- for(int var5 = 0; var5 < var3.length; ++var5) {
- var3[var5] = (var2[var4++] << 16) + (var2[var4++] & '\uffff');
- }
-
- return var3;
- }
- }
-
- private static boolean contains(short[] var0, short var1, int var2) {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] == var1) {
- return true;
- }
- }
-
- return false;
- }
-
- protected static String getComponentFontName(short var0) {
- return var0 < 0 ? null : getString(table_componentFontNameIDs[var0]);
- }
-
- private static String getComponentFileName(short var0) {
- return var0 < 0 ? null : getString(table_fontfileNameIDs[var0]);
- }
-
- private static short getComponentFileID(short var0) {
- return table_filenames[var0];
- }
-
- private static String getScriptName(short var0) {
- return getString(table_scriptIDs[var0]);
- }
-
- protected short[] getCoreScripts(int var1) {
- short var2 = this.getInitELC();
- short[] var3 = getShortArray(table_sequences[var2 * 5 + var1]);
- if (this.preferLocaleFonts) {
- if (this.reorderScripts == null) {
- this.reorderScripts = new HashMap();
- }
-
- String[] var4 = new String[var3.length];
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- var4[var5] = getScriptName(var3[var5]);
- this.reorderScripts.put(var4[var5], var3[var5]);
- }
-
- this.reorderSequenceForLocale(var4);
-
- for(int var6 = 0; var6 < var4.length; ++var6) {
- var3[var6] = (Short)this.reorderScripts.get(var4[var6]);
- }
- }
-
- return var3;
- }
-
- private static short[] getFallbackScripts() {
- return getShortArray(head[15]);
- }
-
- private static void printTable(short[] var0, int var1) {
- for(int var2 = var1; var2 < var0.length; ++var2) {
- System.out.println(" " + var2 + " : " + getString(var0[var2]));
- }
-
- }
-
- private static short[] readShortTable(DataInputStream var0, int var1) throws IOException {
- if (var1 == 0) {
- return EMPTY_SHORT_ARRAY;
- } else {
- short[] var2 = new short[var1];
- byte[] var3 = new byte[var1 * 2];
- var0.read(var3);
- int var4 = 0;
-
- for(int var5 = 0; var4 < var1; var2[var4++] = (short)(var3[var5++] << 8 | var3[var5++] & 255)) {
- }
-
- return var2;
- }
- }
-
- private static void writeShortTable(DataOutputStream var0, short[] var1) throws IOException {
- for(int var2 = 0; var2 < var1.length; ++var2) {
- var0.writeShort(var1[var2]);
- }
-
- }
-
- private static short[] toList(HashMap var0) {
- short[] var1 = new short[var0.size()];
-
- for(int var2 = 0; var2 < var1.length; ++var2) {
- var1[var2] = -1;
- }
-
- for(Map.Entry var3 : var0.entrySet()) {
- var1[(Short)var3.getValue()] = getStringID((String)var3.getKey());
- }
-
- return var1;
- }
-
- protected static String getString(short var0) {
- if (var0 == 0) {
- return null;
- } else {
- if (stringCache[var0] == null) {
- stringCache[var0] = new String(table_stringTable, table_stringIDs[var0], table_stringIDs[var0 + 1] - table_stringIDs[var0]);
- }
-
- return stringCache[var0];
- }
- }
-
- private static short[] getShortArray(short var0) {
- String var1 = getString(var0);
- char[] var2 = var1.toCharArray();
- short[] var3 = new short[var2.length];
-
- for(int var4 = 0; var4 < var2.length; ++var4) {
- var3[var4] = (short)(var2[var4] & '\uffff');
- }
-
- return var3;
- }
-
- private static short getStringID(String var0) {
- if (var0 == null) {
- return 0;
- } else {
- short var1 = (short)stringTable.length();
- stringTable.append(var0);
- short var2 = (short)stringTable.length();
- stringIDs[stringIDNum] = var1;
- stringIDs[stringIDNum + 1] = var2;
- ++stringIDNum;
- if (stringIDNum + 1 >= stringIDs.length) {
- short[] var3 = new short[stringIDNum + 1000];
- System.arraycopy(stringIDs, 0, var3, 0, stringIDNum);
- stringIDs = var3;
- }
-
- return (short)(stringIDNum - 1);
- }
- }
-
- private static short getShortArrayID(short[] var0) {
- char[] var1 = new char[var0.length];
-
- for(int var2 = 0; var2 < var0.length; ++var2) {
- var1[var2] = (char)var0[var2];
- }
-
- String var3 = new String(var1);
- return getStringID(var3);
- }
-
- // $FF: synthetic method
- static short[] access$002(short[] var0) {
- head = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$000() {
- return head;
- }
-
- // $FF: synthetic method
- static short[] access$102(short[] var0) {
- table_scriptIDs = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$200(HashMap var0) {
- return toList(var0);
- }
-
- // $FF: synthetic method
- static short[] access$100() {
- return table_scriptIDs;
- }
-
- // $FF: synthetic method
- static short[] access$302(short[] var0) {
- table_scriptFonts = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$300() {
- return table_scriptFonts;
- }
-
- // $FF: synthetic method
- static short[] access$402(short[] var0) {
- table_elcIDs = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$400() {
- return table_elcIDs;
- }
-
- // $FF: synthetic method
- static short[] access$502(short[] var0) {
- table_sequences = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$500() {
- return table_sequences;
- }
-
- // $FF: synthetic method
- static short[] access$602(short[] var0) {
- table_fontfileNameIDs = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$600() {
- return table_fontfileNameIDs;
- }
-
- // $FF: synthetic method
- static short[] access$702(short[] var0) {
- table_componentFontNameIDs = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$700() {
- return table_componentFontNameIDs;
- }
-
- // $FF: synthetic method
- static short[] access$802(short[] var0) {
- table_filenames = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$800() {
- return table_filenames;
- }
-
- // $FF: synthetic method
- static short[] access$902(short[] var0) {
- table_exclusions = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$900() {
- return table_exclusions;
- }
-
- // $FF: synthetic method
- static short access$1000(String var0) {
- return getStringID(var0);
- }
-
- // $FF: synthetic method
- static short[] access$1102(short[] var0) {
- table_proportionals = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$1100() {
- return table_proportionals;
- }
-
- // $FF: synthetic method
- static short[] access$1202(short[] var0) {
- table_scriptFontsMotif = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$1200() {
- return table_scriptFontsMotif;
- }
-
- // $FF: synthetic method
- static short[] access$1300() {
- return EMPTY_SHORT_ARRAY;
- }
-
- // $FF: synthetic method
- static short[] access$1402(short[] var0) {
- table_alphabeticSuffix = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short[] access$1400() {
- return table_alphabeticSuffix;
- }
-
- // $FF: synthetic method
- static short access$1500(short[] var0) {
- return getShortArrayID(var0);
- }
-
- // $FF: synthetic method
- static short[] access$1602(short[] var0) {
- table_stringIDs = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static short access$1700() {
- return stringIDNum;
- }
-
- // $FF: synthetic method
- static short[] access$1800() {
- return stringIDs;
- }
-
- // $FF: synthetic method
- static short[] access$1600() {
- return table_stringIDs;
- }
-
- // $FF: synthetic method
- static char[] access$1902(char[] var0) {
- table_stringTable = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static StringBuilder access$2000() {
- return stringTable;
- }
-
- // $FF: synthetic method
- static String[] access$2102(String[] var0) {
- stringCache = var0;
- return var0;
- }
-
- // $FF: synthetic method
- static int[] access$2200() {
- return EMPTY_INT_ARRAY;
- }
-
- // $FF: synthetic method
- static Logger access$2300() {
- return logger;
- }
-
- // $FF: synthetic method
- static String[] access$2500() {
- return EMPTY_STRING_ARRAY;
- }
-
- // $FF: synthetic method
- static Vector access$2600(String var0) {
- return splitSequence(var0);
- }
- }
-